package service

import (
	"context"
	"github.com/star-find-cloud/star-chat/image/domain"
)

type ImageMetaDataService interface {
	// Create 创建图片元数据
	Create(ctx context.Context, image *domain.Image) (int64, error)
	// CreateMany 批量创建图片元数据
	CreateMany(ctx context.Context, images []*domain.Image) (int64, error)

	// Get 获取图片元数据
	Get(ctx context.Context, id int64) (*domain.Image, error)
	// GetMany 批量获取图片元数据
	GetMany(ctx context.Context, ids []int64) ([]*domain.Image, error)
	// GetUrl 获取图片路径
	GetUrl(ctx context.Context, id int64) (string, error)
	// GetUrlMany 批量获取图片路径
	GetUrlMany(ctx context.Context, ids []int64) ([]string, error)

	// Update 修改图片元数据
	Update(ctx context.Context, image *domain.Image) error
	// UpdateMany 批量 修改图片元数据
	UpdateMany(ctx context.Context, images []*domain.Image) error
	// UpdateCompressedStatus 修改图片压缩状态
	UpdateCompressedStatus(ctx context.Context, id int64) error

	// Delete 删除图片元数据
	Delete(ctx context.Context, id int64) error
	// DeleteMany 批量 删除图片元数据
	DeleteMany(ctx context.Context, ids []int64) error
}

type ImageLocalService interface {
	// Save 保存图片
	Save(ctx context.Context, image *domain.Image) error
	// SaveMany 批量保存图片
	SaveMany(ctx context.Context, images []*domain.Image) error

	// Modify 修改图片
	Modify(ctx context.Context, image *domain.Image) error
	// ModifyMany 批量修改图片
	ModifyMany(ctx context.Context, images []*domain.Image) error

	// Remove 删除图片
	Remove(ctx context.Context, id int64) error
	// RemoveMany 批量删除图片
	RemoveMany(ctx context.Context, ids []int64) error
}

type ImageOssService interface {
	// GetUploadPresignedURL 获取图片上传的预签名URL
	GetUploadPresignedURL(ctx context.Context, image *domain.Image) (string, error)

	// GetDownloadPresignedURL 获取图片下载的预签名URL
	GetDownloadPresignedURL(ctx context.Context, image *domain.Image) (string, error)

	// GetDeletePresignedURL 获取图片删除的预签名URL
	GetDeletePresignedURL(ctx context.Context, image *domain.Image) (string, error)
}
